package demo4;

/**
 * Author：毕龙
 * Date: 2024/5/12 14:09
 */
public class TestString {
    public static void main(String[] args) {
        //直接在字符串池中放一个字符
        //只创建一个对象
        String str = "chenkai";
        System.out.println(str);
        //创建两个对象
        //第一个对象是在堆空间中存放
        //第二个对象是在字符串池中复制一个
        String str1 = new String("林嘉伟");
        System.out.println(str1);
        //创建一个对象
        //创建对象 在堆空间中存放
        String str2 = new String("chenkai");
        System.out.println(str2);

        //一共创建几个对象
        //创建3个对象
        String str3 = "abc";
        // abc + abc  = abcabc
        //字符串是在常量池中存放 一旦创建完对象 是不可以改变
        String str4 = str3 + new String("abc");

        String str5 = "abc";
        //主要作用是为了字符串共享 数据共享   省略空间
        System.out.println(str3 == str5);

        System.out.println(System.identityHashCode(str5));
        //对于字符串可变的字符串操作 从新开辟空间
        str5 = str5 + "zehao";
        System.out.println(System.identityHashCode(str5));

        //创建几个对象
        //6   7  9  8  6
        String str6 = "a"+"b"+"c"+"d"+new String("a")+new String("abc");
        /*
          4  + 1 + 2
        *   7
        * ab  8
        * abc
        * abcd 9
        * abcda 10
        * abcdaabc 11
        *
        *
        * */

    }
}
